//package com.zmn.plat.admin.controller.oneprice;
//
//import java.util.List;
//import java.util.Map;
//import java.util.Objects;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.common.utils.collection.CollectionUtil;
//import com.zmn.plat.manager.dictionary.ChannelDict;
//import com.zmn.plat.model.entity.channel.Channel;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.BeanUtils;
//import org.springframework.stereotype.Controller;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.bind.annotation.ModelAttribute;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.ModelAndView;
//
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.constant.StatusConsts;
//import com.zmn.common.dto.KvDTO;
//import com.zmn.common.dto.LayuiTableResponseDTO;
//import com.zmn.common.dto.ResultDTO;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.common.constant.OnePriceConsts;
//import com.zmn.plat.manager.dictionary.OnePriceDict;
//import com.zmn.plat.model.entity.oneprice.*;
//
///**
// * 描述:
// *
// * @author tanghongjun
// * @since 2019/7/4 14:28
// */
//@Controller
//@RequestMapping("/oneprice/channel/price/")
//public class ChannelPriceListController extends ChannelPriceBaseController {
//
//    private Logger logger = LoggerFactory.getLogger(ChannelPriceListController.class);
//
//    /**
//     * 描述: 区域列表
//     *
//     * @param query
//     *            查询实体
//     * @return ModelAndView
//     */
//    @RequestMapping(value = "list")
//    public ModelAndView list(@ModelAttribute ChannelPriceQuery query) {
//
//        ModelAndView mav = new ModelAndView("oneprice/list");
//
//        try {
//            List<ChannelPriceVO> channelPrices = channelPriceService.listVOPageByQuery(query);
//            mav.addObject("provinceList", getProvinceList());
//            mav.addObject("cityList", query.getProvinceId() == null ? null : getAreaList(query.getProvinceId()));
//            mav.addObject("channelList", listEnableRankTwoChannel());
//            mav.addObject("typeList", OnePriceDict.getTypeList());
//            mav.addObject("vo", query);
//            mav.addObject("items", channelPrices);
//        } catch (Exception e) {
//            logger.error(e.toString(), e);
//        }
//        return mav;
//    }
//
//    /**
//     * 描述: 渠道一口价详情
//     *
//     * @param channelPriceVO
//     * @return ModelAndView 产品详情页面
//     */
//    @RequestMapping("detail")
//    public ModelAndView detail(ChannelPriceVO channelPriceVO) {
//        ModelAndView mav = new ModelAndView("oneprice/detail");
//        return this.detailChannelPrice(mav, channelPriceVO);
//    }
//
//    /**
//     * 描述: 渠道一口价添加，修改页面 跳转方法
//     *
//     * @param channelPriceVO
//     * @return modelAndView
//     * @author tanghongjun
//     * @since 2018/10/16 11:10
//     */
//    @RequestMapping(value = "addEditView")
//    public ModelAndView addEditView(ChannelPriceVO channelPriceVO) {
//        ModelAndView mav = new ModelAndView("oneprice/edit");
//        return this.detailChannelPrice(mav, channelPriceVO);
//    }
//
//    /**
//     * 描述: 新增配置
//     *
//     * @return modelAndView
//     * @author xiangjunming
//     * @since 2019/11/19 11:10
//     */
//    @RequestMapping(value = "add")
//    public ModelAndView add() {
//        ModelAndView mav = new ModelAndView("oneprice/add");
//        mav.addObject("typeList", OnePriceDict.getTypeList());
//        mav.addObject("type", 1);
//        return mav;
//    }
//
//    /**
//     * 描述: 加载添加编辑页面基础数据
//     *
//     * @param mav
//     *            视图对象
//     * @param channelPriceVO
//     *            VO
//     * @return org.springframework.web.servlet.ModelAndView
//     * @author wangjie
//     * @since 20:45 2019/7/7
//     **/
//    private ModelAndView detailChannelPrice(ModelAndView mav, ChannelPriceVO channelPriceVO) {
//        Integer channelPriceId = channelPriceVO.getChannelPriceId() == null ? 0 : channelPriceVO.getChannelPriceId();
//        if (channelPriceId > 0) {
//            ChannelPrice byKey = channelPriceService.findByKey(channelPriceId);
//            BeanUtils.copyProperties(byKey, channelPriceVO);
//
//            ChannelPriceCityQuery query = new ChannelPriceCityQuery();
//            query.setChannelPriceId(channelPriceId);
//            List<ChannelPriceCity> channelPriceCityList = channelPriceCityService.listByQuery(query);
//
//            Map<Integer, List<ChannelPriceCity>> channelPriceCityTypeMap =
//                channelPriceCityList.stream().collect(Collectors.groupingBy(ChannelPriceCity::getType));
//            // 加载一口价城市数据
//            mav.addObject("onePriceList", channelPriceCityTypeMap.get(OnePriceConsts.SUPPORT_CITY));
//            mav.addObject("basePriceList", channelPriceCityTypeMap.get(OnePriceConsts.NOT_SUPPORT_CITY));
//        }
//
//        List<VtDTO> allServCateg = super.getAllServCategShowName();
//        List<ChannelPriceServ> priceServs = channelPriceServService.listByChannelPriceId(channelPriceId);
//        List<Integer> collect = priceServs.stream().map(ChannelPriceServ::getServCategId).collect(Collectors.toList());
//
//        List<VtDTO> collect1 = allServCateg.stream().peek(mm -> {
//            if (collect.contains(mm.getValue())) {
//                mm.setStatus(true);
//            }
//        }).collect(Collectors.toList());
//        if (Objects.nonNull(channelPriceVO.getDeposit())) {
//            String sDeposit = NumberUtil.convertMoneyToYuan(Optional.ofNullable(channelPriceVO.getDeposit()).orElse(0));
//            Double aDouble = Double.valueOf(sDeposit);
//            channelPriceVO.setDeposit(aDouble.intValue());
//        }
//
//        mav.addObject("servCategList", collect1);
//        mav.addObject("depositList", OnePriceDict.getDepositList());
//        mav.addObject("baseAreaList", getProvinceList());
//        mav.addObject("payTypeList", OnePriceDict.getPayTypeList());
//        // mav.addObject("priceDiscountList", OnePriceDict.getPriceDiscountList());
//        mav.addObject("statusList", OnePriceDict.getStatusList());
//        mav.addObject("channelPriceVO", channelPriceVO);
//        mav.addObject("channelList", listEnableRankTwoChannel());
//        mav.addObject("typeList", OnePriceDict.getTypeList());
//        return mav;
//    }
//
//    /**
//     * 描述: 加载一口价配置操作日志
//     *
//     * @param channelPriceLogQuery
//     *            日志查询对象
//     * @return com.zmn.common.dto.LayuiTableResponseDTO
//     * @author wangjie
//     * @since 10:11 2019/7/8
//     **/
//    @RequestMapping(value = "loadChannelPriceLog")
//    @ResponseBody
//    public LayuiTableResponseDTO loadChannelPriceLog(ChannelPriceLogQuery channelPriceLogQuery) {
//
//        ChannelPriceLogQuery query = new ChannelPriceLogQuery();
//        query.setRelationId(channelPriceLogQuery.getRelationId());
//        Integer count = channelPriceLogService.countByQuery(query);
//        query.setTotalCount(count);
//        List<ChannelPriceLog> channelPriceLogs = channelPriceLogService.listByQuery(query);
//        return LayuiTableResponseDTO.success(query.getTotalCount(), channelPriceLogs);
//
//    }
//
//    /**
//     * 检查城市ID是否已配置
//     *
//     * @param provinceId
//     * @param cityId
//     * @param channelId
//     * @return
//     */
//    @RequestMapping(value = "checkCity")
//    @ResponseBody
//    @ReadOnlyConnection
//    public ResponseDTO checkCity(Integer provinceId, Integer cityId, Integer channelId, Integer type) {
//        List<ChannelPriceCity> channelPriceCityList =
//            channelPriceCityService.listByTypeAndChannelIdAndProvinceId(type, channelId, provinceId);
//        boolean flag = false;
//        String checkMsg = "已在其他配置项中开通，不支持重复选择！";
//        for (ChannelPriceCity item : channelPriceCityList) {
//            if (Objects.equals(item.getCityId(), cityId)) {
//                flag = true;
//            } else if (Objects.equals(item.getProvinceId(), provinceId) && item.getCityId() == null) {
//                flag = true;
//                checkMsg = "父级城市已在其他配置项中开通！";
//            } else if (Objects.equals(item.getProvinceId(), provinceId) && cityId == null) {
//                flag = true;
//                checkMsg = "子级城市已在其他配置项中开通！";
//            }
//        }
//        if (flag) {
//            return ResponseDTO.fail(checkMsg);
//        }
//        return ResponseDTO.success(true,"添加成功！");
//    }
//
//    /**
//     * 应用前台分类
//     *
//     * @param configId
//     *            配置ID
//     * @param type
//     *            配置类型 1渠道配置 2城市配置
//     * @param showType
//     *            产品分类 1后台 2前台
//     * @return the model and view
//     * @author xiangjunming
//     * @since 2019/11/21
//     */
//    @RequestMapping(value = "serviceCategory")
//    // @RequiresPermissions("/oneprice/channel/price/addEditView.action")
//    @ReadOnlyConnection
//    public ModelAndView serviceCategory(Integer configId, Integer type, Integer showType) {
//        ModelAndView mav = new ModelAndView("oneprice/serviceCategory");
//
//        List<KvDTO<Integer, String>> servCategorys = null;
//        if (type == GlobalConsts.NO) {
//            ChannelPrice byKey = channelPriceService.findByKey(configId);
//            servCategorys = channelBService.listAllLevelCategoryByChannelId(byKey.getChannelId(), showType);
//            // 如果二级渠道没有开通分类 则获取一级渠道的开通分类
//            if (CollectionUtil.isNullOrEmpty(servCategorys)) {
//                Channel channel = Optional.ofNullable(channelService.findByKey(byKey.getChannelId())).orElse(new Channel());
//                if (Objects.equals(ChannelDict.RANK_TWO, channel.getRank())) {
//                    if ((!Objects.isNull(channel.getParentId())) && (!Objects.equals(GlobalConsts.NO, channel.getParentId()))) {
//                        servCategorys = channelBService.listAllLevelCategoryByChannelId(channel.getParentId(), showType);
//                    }
//                }
//            }
//        } else {
//            servCategorys = super.getAllChildCategory(showType);
//        }
//        List<ChannelPriceCategory> serviceCategoryList =
//            channelPriceCategoryService.listByConfigIdAndTypeAndShowType(configId, type, showType);
//        List<String> categIds = serviceCategoryList.stream().map(p -> p.getServCategId() + "-" + p.getCategOneId() + "-" + p.getCategId())
//            .collect(Collectors.toList());
//        if (servCategorys != null && servCategorys.size() > 0) {
//            mav.addObject("currentServCategId", servCategorys.get(0).getKey());
//        }
//
//        mav.addObject("categIds", categIds);
//        mav.addObject("servCategorys", servCategorys);
//        mav.addObject("configId", configId);
//        mav.addObject("type", type);
//        mav.addObject("showType", showType);
//        return mav;
//    }
//}
